#include <iostream>
#include <string>
#include <regex>

int main()
{

    std::string str = "/number/1234";
    //匹配以 /number/起始， 后边跟了一个或多个数字字符的字符串并且在匹配的过程中提取
    //这个匹配到的数字字符串
    std::regex e("/number/(\\d+)");
    //在 C++ 字符串中，反斜杠\需要转义，因此\d在字符串中写成\\d
    // + 是一个量词，表示前面的元素必须出现一次或多次。
    // /numbers/\d 只能匹配 /numbers/1、/numbers/5 等，但无法匹配 /numbers/1234（因为 1234 是多个数字）。
    // /numbers/\d+ 可以匹配 /numbers/1、/numbers/1234、/numbers/99999 等任意长度的数字。
    // \\d+ 表示匹配一个或多个数字字符
    //()用于捕获分组, 将匹配到的数字部分保存到matches中
    std::smatch matches;

    bool ret = std::regex_match(str, matches, e);
    if(ret == false)
    {
        return -1;
    }

    for(auto & s : matches)
    {
        std::cout << s << std::endl;
    }
    return 0;
}